FIG. 1 shows a prior art system 100 for processing images captured by an image sensor. As is known in the art, the image sensor 101 is typically a pixelated light sensitive device (such as an array of CMOS image sensors). Inset 110 shows a simplistic depiction of a “frame” of information that is captured by the image sensor 100 and stored in memory 102. Each pixel 111_1 through 111_N of the image includes a luminosity value for a particular color (e.g., red (R), green (G), blue (B) or other color). In a common situation, the underlying photoelement in the sensor responds to light intensity of a particular color.
According to various types of sensors, each color specific pixel is effected by placing a colored filter before the pixel's photoelement. For example, red color filters are placed before the photoelements of red pixels, blue color filters are placed before the photoelements of blue pixels, etc. Again, even though red, green and blue are used as primary examples, they are only examples and other colors may be used (e.g., red/blue/clear; yellow/magenta/cyan; dark red/light red/dark blue/light blue/dark green/light green). Additionally the particular RGB pixel pattern of FIG. 1 is only exemplary (other pixel patterns are possible).
“Blocks” of pixels are then read from memory 102 and processed by an image signal processor 103. A block is a contiguous group of pixels, typically in the shape of a square (e.g. block 105 of FIG. 5). For example, the image signal processor 103 may accept 2 pixel×2 pixel (or larger) blocks as units of input information. Again, each “pixel” of a block contains a luminosity value for that pixel (a measurement of its brightness/intensity). The RGB pixel pattern of the frame dictates whether the luminosity value is understood to correspond to a red, green or blue luminosity value.
The image signal processor 103 then performs various computations on the block to generate a signal for display on a display 104. In many implementations the signal is stored in a memory (e.g., a system memory before it is displayed) prior to being displayed and may even be stored to memory without being displayed. The computations may include but are not limited to the following: demosaicing, noise reduction, image sharpening, chromatic aberration correction, geometric distortion correction, dead pixel correction and gamma correction.
The image signal processor 103 is typically implemented with a pipeline (software, hardware or both) that concurrently processes different blocks. For example, while a first block is being processed by a demosaicing stage, another block may be processed by a noise reduction stage. Blocks are read in succession from memory 102 into, e.g., a first stage of the image signal processor's pipeline. Upon the first stage of the pipeline finishing a first block, a next block from memory is received. Thus, the second stage of the pipeline processes the first block and the first stage of the pipeline processes the second block. The process continues until all blocks of the frame are fully processed by the pipeline.